package collection;

import java.util.LinkedList;
import java.util.Queue;

/**
 * 队列java.util.Queue
 * 队列Queue接口继承自Collection。因此队列可以保存一组元素，但是存取元素必须
 * 遵循先进先出原则。FIF0 :First Input First output
 * 常见实现类:LinkedList
 */
public class QueueDemo {
    public static void main(String[] args) {
        Queue<String> queue = new LinkedList<>();
        //offer方法是队列提供的入队操作，将元素添加到队列末尾
        queue.offer("one");
        queue.offer("two");
        queue.offer("three");
        queue.offer("four");
        queue.offer("five");
        System.out.println(queue);
        //poll方法是出队操作，获取并删除了队首元素。
        String str = queue.poll();
        System.out.println(str);
        System.out.println(queue);

        //peek方法是引用队首元素，获取后元素还在队列中
        str = queue.peek();
        System.out.println(str);
        System.out.println(queue);

        //由于队列是一个集合，因此Collection中的操作都支持
        System.out.println(queue.size());

        for (String e : queue){
            System.out.println(e);
        }
        System.out.println(queue);

        while (queue.size()>0){
            System.out.println(queue.poll());
        }
        System.out.println(queue);
    }
}
